home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / djgpp / libsrc / c / lib / itoa.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-07-18  |  1.2 KB  |  51 lines

  1. /* This is file ITOA.C */
  2. /*
  3. ** Copyright (C) 1994 DJ Delorie, 24 Kirsten Ave, Rochester NH 03867-2954
  4. **
  5. ** This file is distributed under the terms listed in the document
  6. ** "copying.dj", available from DJ Delorie at the address above.
  7. ** A copy of "copying.dj" should accompany this file; if not, a copy
  8. ** should be available from where this file was obtained.  This file
  9. ** may not be distributed without a verbatim copy of "copying.dj".
  10. **
  11. ** This file is distributed WITHOUT ANY WARRANTY; without even the implied
  12. ** warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  13. */
  14.  
  15. #include <stdlib.h>
  16.  
  17. char *itoa(int value, char *string, int radix)
  18. {
  19.   char tmp[33];
  20.   char *tp = tmp;
  21.   int i;
  22.   unsigned v;
  23.   int sign;
  24.   char *sp;
  25.  
  26.   if (string == 0)
  27.     string = (char *)malloc(33);
  28.   sp = string;
  29.  
  30.   sign = (radix == 10 && value < 0);
  31.   if (sign)
  32.     v = -value;
  33.   else
  34.     v = (unsigned)value;
  35.   while (v || tp == tmp)
  36.   {
  37.     i = v % radix;
  38.     v = v / radix;
  39.     if (i < 10)
  40.       *tp++ = i+'0';
  41.     else
  42.       *tp++ = i + 'a' - 10;
  43.   }
  44.   if (sign)
  45.     *sp++ = '-';
  46.   while (tp > tmp)
  47.     *sp++ = *--tp;
  48.   *sp = 0;
  49.   return string;
  50. }
  51.